BaseProtocolServer
Base class for protocol servers (FIX, SBE, etc.). Contains shared infrastructure: lifecycle, sessions, subscriptions, message channels, background tasks.
Hereda de: BaseLogReceiver
Implementa: IProtocolServer, ILogReceiver, ILogSource, IDisposable
Constructores
Propiedades
LoginRateLimiter : LoginRateLimiter
Rate limiter for login attempts (shared across all listeners).
Sessions : IEnumerable<IMessageListenerSession>
Active sessions.
Settings : T
Settings.
State : ChannelStates
Gets the underlying state storage.
Métodos
ClearState()
Clear all state: listeners, sessions, subscriptions.
CreateSubscription(T, string, ServerSubscription, MessageTypes) : T
Create a subscription info instance.
DisposeManaged()
Release resources.
EnqueueMessage(T, string, Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)
Enqueue message for a session with request ID.
EnqueueMessage(T, T, string, Func<T, T, string, CancellationToken, ValueTask<bool>>, CancellationToken)
Core enqueue: schedule work on a client session.
EnqueueMessage(T[], Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)
Enqueue message for multiple subscribers.
EnqueueMessage(T[], Func<T, T, string, CancellationToken, ValueTask<bool>>, CancellationToken)
Enqueue message for multiple subscribers (with bool result).
EnqueueMessage(T, Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)
Enqueue message for a single subscription.
EnqueueMessage(T, Func<T, T, string, CancellationToken, ValueTask<bool>>, CancellationToken)
Enqueue message for a single subscription (with bool result).
EnqueueMessage(T, Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)
Enqueue message for a session (no request ID).
GetSessionKey(T) : string
Get the key used to group client sessions (e.g. SenderCompId).
GetSubscriptions(IMessageListenerSession) : IEnumerable<ServerSubscription>
Get subscription for the specified session.
- session
- Session.
Devuelve: Subscriptions.
HasSubscriptions(DataType, SecurityId) : bool
Are there subscribers.
IsStubSubscription(T) : bool
Check if subscription is a stub (placeholder).
OnClearListenerState()
Clear protocol-specific listener state (stop listeners, etc.).
OnStartListeners(CancellationToken)
Start protocol-specific listeners (TCP, etc.). Add tasks to _backgroundTasks.
ProcessInMessage(Message, CancellationToken)
Process an incoming message and route to subscribed clients.
ProcessLogout(T)
Process client logout/disconnect.
RaiseNewOutMessage(IMessageListenerSession, Message)
Write outgoing message to channel.
RaiseSessionConnected(IMessageListenerSession)
Raise session connected event.
RaiseSessionDisconnected(IMessageListenerSession)
Raise session disconnected event.
RemoveSubscription(ServerSubscription) : bool
Remove subscription.
- subscription
- Subscription.
Devuelve: if subscription was found, otherwise .
Resume(ServerSubscription)
Resume subscription.
- subscription
- Subscription.
Devuelve: if subscription was found, otherwise .
RunAsync(CancellationToken) : IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>>
Run async message processing and return outgoing messages as IAsyncEnumerable. Opens server at start and closes at end.
ScheduleSessionWork(T, ServerSubscription, string, Func<T, string, CancellationToken, ValueTask<bool>>)
Schedule work on a client session's outgoing queue.
SendInMessage(Message) : bool
Send incoming message to server for processing and routing to clients.
StartServer(CancellationToken)
Start the server: initialize state, start listeners and background tasks.
StopServer()
Stop the server: cancel tasks, complete channels, clear state.
Suspend(ServerSubscription)
Suspend subscription.
- subscription
- Subscription.
Devuelve: if subscription was found, otherwise .
Eventos
SessionConnected : Action<IMessageListenerSession>
Session connected event.
SessionDisconnected : Action<IMessageListenerSession>
Session disconnected event.
StateChanged : Action
State change event.
SubscriptionChanged : Action<ServerSubscription>
Client subscription changed event.
Campos
_backgroundTasks : List<Task>
Background tasks (accept clients, process messages, etc.).
_cancellationRequests : SynchronizedSet<long>
Pending order cancellation request transaction IDs.
_changedSubscriptions : SynchronizedSet<ServerSubscription>
Changed subscriptions pending notification.
_clientSessions : CachedSynchronizedDictionary<string, CachedSynchronizedList<T>>
Client sessions grouped by session key (e.g. SenderCompId).
_incomingMessages : Channel<Message>
Incoming messages channel.
_outgoingMessages : Channel<ValueTuple<IMessageListenerSession, Message>>
Outgoing messages channel (session + message pairs).
_subscriptions : SubscriptionHolder<T, T>
Subscription holder.